<?php
class ci_gestion_ordenes extends bioquimicos_ci
{
	protected $s__filtro;

	function tabla($id)
	{
		return $this->dep('relacion')->tabla($id);	
	}
	
	//-----------------------------------------------------------------------------------
	//---- Configuraciones --------------------------------------------------------------
	//-----------------------------------------------------------------------------------

	function conf__pant_inicial(toba_ei_pantalla $pantalla)
	{
		$hay_cambios = $this->dep('relacion')->hay_cambios();
        toba::menu()->set_modo_confirmacion('Esta a punto de abandonar la edicion de la Orden sin grabar, Desea continuar?', $hay_cambios);	
	}
	
	//-----------------------------------------------------------------------------------
	//---- filtro -----------------------------------------------------------------------
	//-----------------------------------------------------------------------------------

	function conf__filtro(bioquimicos_ei_filtro $filtro)
	{
		if (isset($this->s__filtro)) {
			$filtro->set_datos($this->s__filtro);
		}
	}

	function evt__filtro__filtrar($datos)
	{
		$this->s__filtro = $datos;
	}

	function evt__filtro__cancelar()
	{
		unset($this->s__filtro);
	}	

	//-----------------------------------------------------------------------------------
	//---- cuadro -----------------------------------------------------------------------
	//-----------------------------------------------------------------------------------

	function conf__cuadro(bioquimicos_ei_cuadro $cuadro)
	{
		if(isset($this->s__filtro)){
			$where = $this->dep('filtro')->get_sql_where();	
			$datos = toba::consulta_php('ordenes_femeba')->get_ordenes_cabecera($where);
			$cuadro->set_datos($datos);
		}else{
			$datos = toba::consulta_php('ordenes_femeba')->get_ordenes_cabecera();
			$cuadro->set_datos($datos);		
		}	
	}

	function evt__cuadro__seleccion($seleccion)
	{
		$this->dep('relacion')->cargar($seleccion);
		$this->set_pantalla('pant_edicion');	
	}
	
	function evt__cuadro__eliminar($seleccion)
	{
		try{
			$this->dep('relacion')->cargar($seleccion);
            $this->dep('relacion')->eliminar_todo();
        }	catch (toba_error_db $e) {
            if($e->get_sqlstate()=="db_23503"){
                toba::notificacion()->agregar('ATENCION!! El registro No será eliminado para mantener la integridad de los datos.');
            }else{
                toba::notificacion()->agregar('El registro no puede borrarse: '.$e->get_sqlstate() );
            }    
        }	
	}	

	//-----------------------------------------------------------------------------------
	//---- form -------------------------------------------------------------------------
	//-----------------------------------------------------------------------------------

	function conf__form(bioquimicos_ei_formulario $form)
	{
		$datos=$this->tabla('cabecera')->get();
		toba::memoria()->set_dato('obsocial',$datos['id_obra_social']);
		if (empty($datos)){
			$form->set_titulo('Alta de Orden');
		}else{
			$form->set_titulo('Datos de la Orden');
		}
		$form->set_datos($datos);	
	}
 
	function evt__form__modificacion($datos)
	{
		$this->tabla('cabecera')->set($datos);
	}

	//-----------------------------------------------------------------------------------
	//---- form_ml ----------------------------------------------------------------------
	//-----------------------------------------------------------------------------------

	function conf__form_ml(bioquimicos_ei_formulario_ml $form_ml)
	{
		$datos=$this->tabla('detalle')->get_filas();
		$form_ml->set_datos($datos);	
	}

	function evt__form_ml__modificacion($datos)
	{
		$this->tabla('detalle')->procesar_filas($datos);	
	}

	//-----------------------------------------------------------------------------------
	//---- Eventos ----------------------------------------------------------------------
	//-----------------------------------------------------------------------------------

	function evt__agregar()
	{
		$this->set_pantalla('pant_edicion');
	}

	function evt__guardar()
	{
		$this->dep('relacion')->persistidor()->desactivar_transaccion();
		toba::db()->abrir_transaccion();	
		try{			
			$procesar=true;
			$datos=$this->tabla('detalle')->get_filas();
			foreach ($datos as $clave=>$detalle) {
				if ($datos[$clave]['id_estado'] != 2){
					$procesar=false;
				}
			}
			if($procesar){
				$this->dep('relacion')->sincronizar();
				$this->dep('relacion')->resetear();
				toba::db()->cerrar_transaccion();
				toba::notificacion()->agregar('Numero de Transaccion Asignada: '.$cabecera['id'],$nivel = 'info');
				$this->set_pantalla('pant_inicial');
			}else{
				toba::notificacion()->agregar('No es posible Grabar la Orden, Existen Practicas No Autorizadas');
			}
		}catch (toba_error_db $e){
			toba::db()->abortar_transaccion();
			//toba::logger()->error('Error al Grabar, Vuelva a Intentarlo.');
			toba::notificacion()->agregar('Hubo un Error, no se grabaron los datos. Verifique');
			throw $e;
		}			
	}

	function evt__cancelar()
	{
	    $this->dep('relacion')->resetear();
        unset($this->s__filtro);
		$this->set_pantalla('pant_inicial');	
	}

}
?>